package com.javaex.book.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.javaex.book.pojo.Order;

public interface OrderMapper {

	/**
	 * 保存订单
	 * @param order 订单
	 * @return 插入行数
	 */
	Integer insertOrder(Order order);
	
	/**
	 * 查询订单数量
	 * <li> 如果userId为空，查询所有订单数量；否则查询指定用户id的订单数量
	 * @param userId 用户id
	 * @return 订单数量
	 */
	Integer countOrder(Integer userId);
	
	/**
	 * 查询订单
	 * <li> 如果userId为空，查询所有订单；否则查询指定用户id的订单
	 * 
	 * @param userId 用户id
	 * @param start 查询开始位置
	 * @param pageSize 页码
	 * @return 订单集合
	 */
	List<Order> selectOrderList(@Param("userId") Integer userId, @Param("start") Integer start, @Param("pageSize") Integer pageSize);
	
	/**
	 * 根据订单id查询订单信息
	 * @param orderId 订单id
	 * @return 订单信息
	 */
	Order selectOrderByOrderId(String orderId);
	
	/**
	 * 修改订单状态
	 * @param orderId 订单id
	 * @param status 订单状态
	 * @return 修改结果
	 */
	Integer updateOrderStatus(@Param("orderId") String orderId, @Param("status") Integer status);
	
	/**
	 * 删除订单
	 * @param orderId 订单id
	 * @return 删除结果
	 */
	Integer deleteOrder(String orderId);
	
	/**
	 * 删除指定用户id的订单
	 * @param userId 用户id
	 * @return 删除结果
	 */
	Integer deleteOrderByUserId(Integer userId);
}
